#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
int n,tot,cnt,f[MAXN];
struct node
{
	int l,r;
	bool operator<(const node b)const
	{
		return r==b.r?l<b.l:r<b.r;
	}
}a[MAXN];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		if(x+y>=n)continue;
		a[++tot]=(node){x+1,n-y};
	}
	sort(a+1,a+1+tot);
	int j=1;
	for(int i=1;i<=n;++i)
	{
		f[i]=f[i-1];
		while(a[j].r<i)++j;
		cnt=0;
		while(a[j].r==i)
		{
			if(a[j].l==a[j-1].l)++cnt;
			else cnt=1;
			f[i]=max(f[i],f[a[j].l-1]+min(cnt,i-a[j].l+1));
			++j;
		}
	}
	printf("%d\n",n-f[n]);
	return 0;
}
